// 认证工具类
const auth = {
  // 检查是否已登录
  isLoggedIn() {
    const token = wx.getStorageSync('token');
    const userInfo = wx.getStorageSync('userInfo');
    return !!(token && userInfo);
  },

  // 获取用户信息
  getUserInfo() {
    return wx.getStorageSync('userInfo') || null;
  },

  // 获取Token
  getToken() {
    return wx.getStorageSync('token') || '';
  },

  // 保存用户信息
  saveUserInfo(userInfo, token) {
    wx.setStorageSync('userInfo', userInfo);
    wx.setStorageSync('token', token);
  },

  // 清除用户信息
  clearUserInfo() {
    wx.removeStorageSync('userInfo');
    wx.removeStorageSync('token');
  },

  // 检查Token是否过期
  isTokenExpired() {
    const userInfo = this.getUserInfo();
    if (!userInfo || !userInfo.tokenExpires) {
      return true;
    }
    
    const now = new Date().getTime();
    const expires = new Date(userInfo.tokenExpires).getTime();
    return now >= expires;
  },

  // 跳转到登录页
  goToLogin() {
    wx.redirectTo({
      url: '/pages/login/login'
    });
  },

  // 检查登录状态，未登录则跳转到登录页
  checkLogin() {
    if (!this.isLoggedIn() || this.isTokenExpired()) {
      this.clearUserInfo();
      this.goToLogin();
      return false;
    }
    return true;
  },

  // 退出登录
  logout() {
    this.clearUserInfo();
    this.goToLogin();
  },

  // 获取请求头（包含Token）
  getAuthHeader() {
    const token = this.getToken();
    return {
      'Authorization': token,
      'Content-Type': 'application/json'
    };
  },

  // 显示登录提示
  showLoginTip() {
    wx.showModal({
      title: '提示',
      content: '请先登录后再使用此功能',
      showCancel: false,
      confirmText: '去登录',
      success: (res) => {
        if (res.confirm) {
          this.goToLogin();
        }
      }
    });
  }
};

module.exports = auth;
